/**
 * createby : JinxLbj
 * date : 2018/8/8
 * desc : 项目控制服务接口
 **/

package com.example.demo.biz.project.service;

import com.example.demo.common.entity.Result;

public interface ProjectService {

    /**
     * clone项目到本地
     * @param projectName 项目名称
     * @param url 项目URL
     * @param username 项目用户名
     * @param password 项目用户密码
     * @return 结果类
     */
    Result cloneProject(String projectName, String url, String username, String password);

    /**
     * pull项目
     * @param projectName 项目名称
     * @param branchName 分支名称
     * @param remoteName 仓库名称
     * @param username 项目用户名
     * @param password 项目用户密码
     * @return 结果类
     */
    Result pullProject(String projectName, String branchName, String remoteName, String username, String password);

    /**
     * 启动后台项目
     * @param projectName 项目名称
     * @param type 启动方式
     * @param config 运行配置
     * @param packageName 打包后文件名
     * @return 结果类
     */
    Result runProjectBack(String projectName, Integer type, String config, String packageName);

    /**
     * 启动前台项目
     * @param projectName 项目名称
     * @param type 启动方式
     * @return 结果类
     */
    Result runProjectFront(String projectName, Integer type);

    /**
     * 停止项目
     * @param projectName 项目名称
     * @return 结果类
     */
    Result stopProject(String projectName);

    /**
     * 发布项目
     * @param host 主机
     * @param port 端口（默认22）
     * @param ftpUsername 主机用户名
     * @param ftpPassword 主机密码
     * @param dst 目标路径
     * @param projectName 文件名
     * @return 结果类
     */
    Result uploadProject(String host, Integer port, String ftpUsername, String ftpPassword, String dst, String projectName);

    /**
     * 发布后端项目
     * @param host 主机
     * @param port 端口（默认22）
     * @param ftpUsername 主机用户名
     * @param ftpPassword 主机密码
     * @param dst 目标路径
     * @param projectName 文件名
     * @return 结果类
     */
    Result uploadProjectBackEnd(String host, Integer port, String ftpUsername, String ftpPassword, String dst, String projectName);

    /**
     * 获取运行中项目列表
     * @return 结果类
     */
    Result getRunningProject();

}
